package ar.edu.isft189.pdfBox.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import ar.edu.isft189.dao.MesaExamenCrudDao;
import ar.edu.isft189.model.AlumnoExamen;
import ar.edu.isft189.pdfBox.PdfBox;
import ar.edu.isft189.utility.UtilsTools;

public class PdfBoxServiceMesaExamen {

	public boolean pdfA3a(HttpServletRequest request) {

		try {
			
			MesaExamenCrudDao dao = new MesaExamenCrudDao();
			HashMap<String, String> mapHead = new HashMap<String, String>();
			List<String> lst = new ArrayList<String>();
			List<String> lstHead = new ArrayList<String>();
			
			int mesaId = Integer.parseInt(request.getParameter("idm")
					.toString());			
			mapHead.put("isft", "189");
			mapHead.put("carrera", request.getParameter("carrera").toString());
			mapHead.put("asignatura", request.getParameter("materia").toString());
			mapHead.put("profesor", request.getParameter("prof").toString());
			
			lstHead.add("189");
			lstHead.add("N0");
			lstHead.add("N1");
			lstHead.add(request.getParameter("carrera").toString());
			lstHead.add(request.getParameter("materia").toString());
			lstHead.add("REG");
			lstHead.add("EQU");
			lstHead.add("ANIO");
			lstHead.add(request.getParameter("prof").toString());
			lstHead.add("N2");
			lstHead.add("N3");
			lstHead.add("N4");
			lstHead.add("N5");
			

			/*
			 * Intancio la clase que se encarga de completar el formulario y le
			 * paso el nombre del formulario a cargar
			 */
			PdfBox pdfBox = new PdfBox("A3a");		

			// Inserto los datos de la cabecera
//			pdfBox.insertFields(mapHead);
			pdfBox.insertFieldsHead(lstHead);

			// Obtengo los datos de los alumnos
			List<AlumnoExamen> lstDao = dao.getStudentsByIdm(mesaId);
			lst.clear();
			UtilsTools.resetList(lst, 7);

			// Inserto los datos de la grilla
			boolean first = true;
			int nro = 0;
			for (AlumnoExamen ae : lstDao) {
			
				lst.add(0, Integer.toString(nro + 1));
				lst.add(1, ae.getApenom());
				lst.add(2, Integer.toString(ae.getDni()));

				pdfBox.insertRowFields(lst, first);
				first = false;
			}
			
			//Visualizo el PDF 
			pdfBox.preview();

			return true;
		} catch (Exception e) {

			e.printStackTrace();
			return false;
		}
	}
}
